<?php
//Ultima verificacion: 13-10-2014 ; 21-11-2014 ; 20-02-2015
class M_plan_estudio extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los planes de estudios existentes menos los borrados.
	function buscar(){
		$consulta = $this->db->query("SELECT planestudio.*,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=planestudio.idArchivo LIMIT 1) AS hashArchivo,
											DATE_FORMAT(planestudio.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(planestudio.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM planestudio
									  WHERE planestudio.estado<>-1
									  ORDER BY planestudio.nombre ASC");
		return($consulta);
	}
			
	//Este metodo se utiliza cuando queremos obtener los planes de estudios activos
	function buscarActivos($restriccion=null){
		$consulta = $this->db->query("SELECT planestudio.*,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=planestudio.idArchivo LIMIT 1) AS hashArchivo,
											DATE_FORMAT(planestudio.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(planestudio.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM planestudio
									  WHERE planestudio.estado=1 $restriccion
									  ORDER BY planestudio.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar un plan de estudio
	function eliminar($idPlanEstudio=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `planestudio` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `planestudio`.`idPlanEstudio` = " . $this->db->escape($idPlanEstudio) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un plan de estudio
	function crear($nombre=null, $idArchivo=null, $vigente=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `planestudio` (`idPlanEstudio`,`nombre`,`idArchivo`,`vigente`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
												    (NULL,".$this->db->escape($nombre).",".$this->db->escape($idArchivo).",".$this->db->escape($vigente).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un plan de estudio en particular usado generalmente en el formulario de modificar o bien
	//para validar que un plan de estudio pasado por la url sea existente.
	function get($idPlanEstudio=null, $restriccion=null){
		$consulta = $this->db->query("SELECT planestudio.*, (SELECT hash FROM archivo WHERE archivo.idArchivo=planestudio.idArchivo LIMIT 1) AS hashArchivo
									  FROM planestudio
									  WHERE estado<>-1 AND idPlanEstudio=".$this->db->escape($idPlanEstudio)." $restriccion
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver el plan de estudio contiguo a uno en particular usado generalmente en el formulario de modificar
	function getContiguo($idPlanEstudio=null, $cant=null){
		do{			
			$idPlanEstudio+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM planestudio
										  WHERE idPlanEstudio=".$this->db->escape($idPlanEstudio)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1');
		
		return($consulta->row()->idPlanEstudio);
	}
	
	//Este metodo se utiliza cuando queremos devolver el plan de estudio vigente contiguo a uno en particular usado cuando un usuario recorre los
	//planes de estudio activos vigentes
	function getVigenteContiguo($idPlanEstudio=null, $cant=null){
		do{			
			$idPlanEstudio+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM planestudio
										  WHERE idPlanEstudio=".$this->db->escape($idPlanEstudio)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1' || $consulta->row()->estado=='0' || $consulta->row()->vigente=='0');
		
		return($consulta->row()->idPlanEstudio);
	}
	
	//Este metodo se utiliza para modificar un plan de estudio
	function modificar($idPlanEstudio=null, $idArchivo=null, $nombre=null, $vigente=null, $descripcion=null, $estado=null){
		$consulta = $this->db->query("UPDATE `planestudio`
									 SET `idArchivo` = ". $this->db->escape($idArchivo) .",
										 `nombre` = ". $this->db->escape($nombre) .",
									     `vigente` = ". $this->db->escape($vigente) .",
										 `descripcion` = ". $this->db->escape($descripcion) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `planestudio`.`idPlanEstudio` = " . $this->db->escape($idPlanEstudio) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>